<?php
/*******************************************************************
 * SecurityConfigHandler.php
 * Copyright (C) 2006-2007 Midnight Coders, LLC
 *
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations
 * under the License.
 *
 * The Original Code is WebORB Presentation Server (R) for PHP.
 * 
 * The Initial Developer of the Original Code is Midnight Coders, LLC.
 * All Rights Reserved.
 ********************************************************************/
 
 require_once(WebOrb . "Config/ORBConfigHandler.php");
 
 class AclConfigHandler
     extends ORBConfigHandler
 {
    private $m_aclNode;
    //
    private $m_roles;
    //

	public function getRoles(){
		return $this->m_roles;
	}
    
    public function configure($parent, $configContext, DOMNode $section) 
    {
       $this->setORBConfig($configContext);
            
	   $section = $section->getElementsByTagName("acl")->item(0);
	   
	   $this->m_aclNode = $section;
	
	   foreach($section->childNodes as $node )
	   {
          if(!($node instanceof DOMElement))
            continue;

		  $name = $node->getElementsByTagName( "name" )->item(0)->nodeValue;
		  $password = trim($node->getElementsByTagName( "password" )->item(0)->nodeValue);
		  $rolesList = $node->getElementsByTagName( "role" );
		  $this->m_roles = array();
		  $roles=array();
		  
		  foreach($rolesList as $role){
		  	$roles[]=trim($role->nodeValue);
		  	if(!in_array(trim($role->nodeValue),$this->m_roles))
		    	$this->m_roles[] = trim($role->nodeValue);
		  }
		  $this->getORBConfig()->getSecurity()->addUserWithRoles( $name, $password, $roles );
	   }

	   return $this;   
    }
 }

?>